package com.pro.common.modules.service.dependencies.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class JsonKeyUnWrapper {

    // 正则匹配形如 FUNCTION_NAME(`fieldName`) 或 FUNCTION_NAME(fieldName) 的字段名
    private static final Pattern FUNC_FIELD_PATTERN = Pattern.compile("\"[A-Z]+\\(`?([^`\\)]+)`?\\)\"");

    /**
     * 将 JSON 字符串中类似 "DATE(`createTime`)" 这样的字段名转换成普通字段名 "createTime"
     */
    public static String unwrapJsonKeys(String json) {
        Matcher matcher = FUNC_FIELD_PATTERN.matcher(json);
        StringBuffer sb = new StringBuffer();

        while (matcher.find()) {
            String fieldName = matcher.group(1);
            // 替换成普通字段名，加上双引号
            matcher.appendReplacement(sb, "\"" + fieldName + "\"");
        }
        matcher.appendTail(sb);
        return sb.toString();
    }

    public static void main(String[] args) {
        String json = "{\"DATE(`createTime`)\":\"2024-01-01\",\"MIN(`sort`)\":100,\"name\":\"名称\"}";

        String fixedJson = unwrapJsonKeys(json);
        System.out.println("转换后 JSON:");
        System.out.println(fixedJson);

        // 你可以用 Jackson 直接反序列化 fixedJson
    }
}
